package com.cskaoyan.mapper;

import com.cskaoyan.bean.User;
import com.cskaoyan.bean.UserVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 创建日期: 2022/05/20 15:16
 *
 * @author ciggar
 */
public interface UserMapper {

    // where标签
    User selectUserById(@Param("id") Integer id);

    // if标签
    List<User> selectUserListByUser(@Param("user") User user);


    // 需求：传入一个age，假如这个age 大于30，那么查询出所有的 年龄比30岁大的用户
    // 假如age小于等于30，那么查询出所有的年龄小于或者是等于30的用户
    List<User> selectUserListByAge(@Param("age") Integer age);


    // 需求：传入一个age，假如这个age 大于30，那么查询出所有的 年龄比30岁大的用户
    // 否则，那么查询出所有的年龄小于或者是等于30的用户
    List<User> selectUserListByAgeUseChooseWhenOtherWise(@Param("age") Integer age);


    User selectUserByIdWithAllColumn(@Param("id") Integer id);

    UserVO selectUserByIdWithBaseColumn(@Param("id") Integer id);


    // 根据id修改用户信息
    int updateUser(@Param("user") User user);

    // 根据id修改用户信息
    // 假如对应的成员变量，没有传值，那么就不修改
    int updateUserBySelective(@Param("user") User user);

    int updateUserByUserSelectiveUseSet(@Param("user") User user);


    // selectKey标签，获取自增的id
    int insertUserWithReturnId(@Param("user") User user);


    int insertUserWithReturnIdUseGeneratedKeys(@Param("user") User user);


    // 批量插入
    int insertUserListWithoutParam(List<User> userList);

    int insertUserListWithParam(@Param("userList") List<User> userList);


    int insertUserArrayWithOutParam(User[] users);

    // in 查询
    List<User> selectUserListByIds(List<Integer> ids);





}
